package com.dragon.modules.yuegou.enums.product;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 *  参团状态
 *  0 待支付 1 待成团 2待使用 3已使用 4已过期 5已退款
 * @author 余胜国
 *
 */
public enum GrouponJoinStatus {
	/**
	 * 未成团
	 */
	NOT_PAY(0, "待支付"),
	/**
	 * 已成团
	 */
	NOT_GROUPON(1, "待成团"),
	NOT_USE(2, "待使用"),
	USED(3, "已使用"),
	EXPIRED(4, "已过期"),
	REFUND(5, "已退款"),
	EXPIRED_NOT_PAY(6, "已过期未付款");


	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private GrouponJoinStatus(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}
	
	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 * 
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 * 
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	@JsonCreator
	public static GrouponJoinStatus from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for GrouponStatus
	 */
	private static final Map<Integer, GrouponJoinStatus> CODE_MAP = Stream.of(GrouponJoinStatus.values())
			.collect(Collectors.toMap(GrouponJoinStatus::getCode, e -> e));

}
